group_by(Trial.Number) %>%
slice(-n()) #returns top n rows of data frame
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n())
summary<-df %>%
group_by(Trial.Number,Behavior_recoded) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(Duration..s.), times.transitions = n(), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
summary<-summary[!duplicated(summary),]
trial.nos<-unique(summary$Trial.Number)
behaviors<-unique(summary$Behavior_recoded)
zeros<-tidyr::crossing(trial.nos, behaviors)
zeros$time.spent<-0
colnames(zeros)<-c("Trial.Number","Behavior_recoded","time.spent")
zeros$trialBehav<-apply(zeros[ , c(1,2)] , 1 , paste , collapse = "_" )
summary$trialBehav<-apply(summary[ , c(1,2)] , 1 , paste , collapse = "_" )
zeros<-zeros[-which(zeros$trialBehav %in% summary$trialBehav),]
zeros$times.transitions<-0
zeros<-merge(zeros[,c(1:3,5)],summary[,c(1,5:6)],by="Trial.Number",all.x=T)
zeros<-zeros[which(!duplicated(zeros)),]
summary<-rbind(summary[,c(1:6)],zeros)
#factor(summary$Behavior_recoded,levels=levels(summary$Behavior_recoded)[c(3,2,1,4,5,6)] )
#Compare duration of time spent in each behavior across trials
summary1<-summary[which(summary$Trial.Type=="Mate vs. Stranger"|summary$Trial.Type=="Stranger vs. Mate"|summary$Trial.Type=="Mate vs. Stranger 2"),]
summary1[which(summary1$Behavior_recoded=="toward stranger2 x"),]$Behavior_recoded<-"toward stranger1 x"
summary1[which(summary1$Behavior_recoded=="toward stranger2 xx"),]$Behavior_recoded<-"toward stranger1 xx"
summary1$Behavior_recoded<-factor(summary1$Behavior_recoded,levels=c("toward mate xx","toward mate x","Neutral","toward stranger1 x","toward stranger1 xx"),labels=c("Strong mate preference","Soft mate preference","Neutral","Soft stranger preference","Strong stranger preference") )
summary1<-summary1[order(summary1$Trial.Number),]
slice <- dplyr::slice #This function will index rows by their integer location
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #returns top n rows of data frame
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n())
#Great. Now let's create a summary table of total time spent and number of times moved towards mate
summary<-df %>%
group_by(Trial.Number,Behavior_recoded) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(Duration..s.), times.transitions = n(), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
summary<-summary[!duplicated(summary),]
trial.nos<-unique(summary$Trial.Number)
behaviors<-unique(summary$Behavior_recoded)
zeros<-tidyr::crossing(trial.nos, behaviors)
zeros$time.spent<-0
colnames(zeros)<-c("Trial.Number","Behavior_recoded","time.spent")
zeros$trialBehav<-apply(zeros[ , c(1,2)] , 1 , paste , collapse = "_" )
summary$trialBehav<-apply(summary[ , c(1,2)] , 1 , paste , collapse = "_" )
zeros<-zeros[-which(zeros$trialBehav %in% summary$trialBehav),]
zeros$times.transitions<-0
zeros<-merge(zeros[,c(1:3,5)],summary[,c(1,5:6)],by="Trial.Number",all.x=T)
zeros<-zeros[which(!duplicated(zeros)),]
summary<-rbind(summary[,c(1:6)],zeros)
#factor(summary$Behavior_recoded,levels=levels(summary$Behavior_recoded)[c(3,2,1,4,5,6)] )
#Compare duration of time spent in each behavior across trials
summary1<-summary[which(summary$Trial.Type=="Mate vs. Stranger"|summary$Trial.Type=="Stranger vs. Mate"|summary$Trial.Type=="Mate vs. Stranger 2"),]
summary1[which(summary1$Behavior_recoded=="toward stranger2 x"),]$Behavior_recoded<-"toward stranger1 x"
summary1[which(summary1$Behavior_recoded=="toward stranger2 xx"),]$Behavior_recoded<-"toward stranger1 xx"
summary1$Behavior_recoded<-factor(summary1$Behavior_recoded,levels=c("toward mate xx","toward mate x","Neutral","toward stranger1 x","toward stranger1 xx"),labels=c("Strong mate preference","Soft mate preference","Neutral","Soft stranger preference","Strong stranger preference") )
summary1<-summary1[order(summary1$Trial.Number),]
slice <- dplyr::slice #This function will index rows by their integer location
View(summary)
View(summary1)
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #removes repeat of soft stranger preference at end of each group
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #removes repeat of soft stranger preference at end of each group
library(ggplot2)
ggplot(data=summary1,aes(x=Focal.Female,y=time.spent,fill=factor(Behavior_recoded) ))+
geom_bar(position="stack",stat="identity")+
facet_wrap(~ factor(Trial.Type, levels=c("Mate vs. Stranger","Stranger vs. Mate", "Mate vs. Stranger 2")))+
scale_fill_manual(values=c("steelblue4", "darkolivegreen4", "goldenrod2", "darkorange2","red3"),name="Region of Arena")+
labs(x="Focal Female",y="Cumulative Time Spent (minutes)")+
theme_classic()
setwd("~/Google Drive/FischerLab/Projects/2022 Phonotaxis/Molly 2022/R Analysis")
library(dplyr)
library(daya.table)
#Read in dataframe
df<-read.csv("Master BORIS Data.csv")
library(data.table)
TrialInfo<-read.csv("Trial Info.csv")
#Let's merge the relevant info together
df<-merge(df,TrialInfo,by=c("Trial.Number","Focal.Female"),all.x=T)
#We now want to specify what the different directions mean, depending on the trial setup
df$Trial.Type #all have a trial type
#The speaker with the matching ID (A, B, C, D, etc) is the mate
#We want to create a new column in the df to specify which side the mate is on
#Start with an empty column
df$mateSide<-NA
#Now fill that column, first for rows where one of the speakers matches the focal female
df[which(df$Left.Speaker==df$Focal.Male),] #This subsetting command finds all rows where the letter in the left speaker column is identical to the letter in the focal female column
df[which(df$Left.Speaker==df$Focal.Male),]$mateSide<-"Left"
df[which(df$Right.Speaker==df$Focal.Male),]$mateSide<-"Right"
#Check that all Mate vs. Stranger trials specify left or right side
df[which(df$Trial.Type=="Mate vs. Stranger"),]$mateSide
#and all those that are not Mate vs Stranger trials are NA
df[which(df$Trial.Type!="Mate vs. Stranger"),]$mateSide
#yes
#Also specify Stranger Sides
df$Stranger1Side<-NA
df[which(df$Left.Speaker==df$Focal.Male),]$Stranger1Side<-"Right"
df[which(df$Right.Speaker==df$Focal.Male),]$Stranger1Side<-"Left"
df$Stranger2Side<-NA
df[which(is.na(df$mateSide)),]$Stranger1Side<-"Left"
df[which(is.na(df$mateSide)),]$Stranger2Side<-"Right"
#Now recode behaviors "left" and "right" as "toward mate" and "toward stranger"
df$Behavior_recoded<-NA
df[which(df$mateSide=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward mate x"
df[which(df$mateSide=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward mate xx"
df[which(df$mateSide=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward mate x"
df[which(df$mateSide=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward mate xx"
df[which(df$Stranger1Side=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward stranger1 x"
df[which(df$Stranger1Side=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward stranger1 xx"
df[which(df$Stranger1Side=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward stranger1 x"
df[which(df$Stranger1Side=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward stranger1 xx"
df[which(df$Stranger2Side=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward stranger2 x"
df[which(df$Stranger2Side=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward stranger2 xx"
df[which(df$Stranger2Side=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward stranger2 x"
df[which(df$Stranger2Side=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward stranger2 xx"
df[which(df$Behavior=="Center"),]$Behavior_recoded<-"Neutral"
#Great. Now let's create a summary table of total time spent and number of times moved towards mate
summary<-df %>%
group_by(Trial.Number,Behavior_recoded) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(Duration..s.), times.transitions = n(), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
summary<-summary[!duplicated(summary),]
trial.nos<-unique(summary$Trial.Number)
behaviors<-unique(summary$Behavior_recoded)
zeros<-tidyr::crossing(trial.nos, behaviors)
zeros$time.spent<-0
colnames(zeros)<-c("Trial.Number","Behavior_recoded","time.spent")
zeros$trialBehav<-apply(zeros[ , c(1,2)] , 1 , paste , collapse = "_" )
summary$trialBehav<-apply(summary[ , c(1,2)] , 1 , paste , collapse = "_" )
zeros<-zeros[-which(zeros$trialBehav %in% summary$trialBehav),]
zeros$times.transitions<-0
zeros<-merge(zeros[,c(1:3,5)],summary[,c(1,5:6)],by="Trial.Number",all.x=T)
zeros<-zeros[which(!duplicated(zeros)),]
summary<-rbind(summary[,c(1:6)],zeros)
#Compare duration of time spent in each behavior across trials
summary1<-summary[which(summary$Trial.Type=="Mate vs. Stranger"|summary$Trial.Type=="Stranger vs. Mate"|summary$Trial.Type=="Mate vs. Stranger 2"),]
summary1[which(summary1$Behavior_recoded=="toward stranger2 x"),]$Behavior_recoded<-"toward stranger1 x"
summary1[which(summary1$Behavior_recoded=="toward stranger2 xx"),]$Behavior_recoded<-"toward stranger1 xx"
summary1$Behavior_recoded<-factor(summary1$Behavior_recoded,levels=c("toward mate xx","toward mate x","Neutral","toward stranger1 x","toward stranger1 xx"),labels=c("Strong mate preference","Soft mate preference","Neutral","Soft stranger preference","Strong stranger preference") )
summary1<-summary1[order(summary1$Trial.Number),]
slice <- dplyr::slice #This function will index rows by their integer location. Soft and strong stranger preference repeat at the end, so we need to remove these rows
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #removes repeat of strong stranger preference at end of each group
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #removes repeat of soft stranger preference at end of each group
library(ggplot2)
ggplot(data=summary1,aes(x=Focal.Female,y=time.spent,fill=factor(Behavior_recoded) ))+
geom_bar(position="stack",stat="identity")+
facet_wrap(~ factor(Trial.Type, levels=c("Mate vs. Stranger","Stranger vs. Mate", "Mate vs. Stranger 2")))+
scale_fill_manual(values=c("steelblue4", "darkolivegreen4", "goldenrod2", "darkorange2","red3"),name="Region of Arena")+
labs(x="Focal Female",y="Cumulative Time Spent (minutes)")+
theme_classic()
#t.test(summary[which(summary$Behavior_recoded=="toward mate xx"),]$time.spent,summary[which(summary$Behavior_recoded=="toward stranger1 xx"),]$time.spent)
#t.test(summary[which(summary$Behavior_recoded=="toward mate x"),]$time.spent,summary[which(summary$Behavior_recoded=="toward stranger1 x"),]$time.spent)
mod<-aov(lm(time.spent~Behavior_recoded+Trial.Type,data=summary))
summary(mod)
TukeyHSD(mod)
summary1_PRED<-summary1
summary1_PRED<-summary1_PRED[!duplicated(summary1_PRED),]
summary1_PRED<-summary1_PRED[order(summary1_PRED$Trial.Number),]
#neutral, soft stranger, soft mate, strong mate, strong stranger
summary1_PRED[which(summary1_PRED$Behavior_recoded=="Neutral"),]$time.spent<-runif(n=30,min=110,max=170)
summary1_PRED[which(summary1_PRED$Behavior_recoded=="Soft mate preference"),]$time.spent<-runif(n=30,min=170,max=260)
summary1_PRED[which(summary1_PRED$Behavior_recoded=="Strong mate preference"),]$time.spent<-runif(n=30,min=80,max=140)
summary1_PRED[which(summary1_PRED$Behavior_recoded=="Soft stranger preference"),]$time.spent<-runif(n=30,min=45,max=90)
summary1_PRED[which(summary1_PRED$Behavior_recoded=="Strong stranger preference"),]$time.spent<-runif(n=30,min=0,max=0)
summary1_PRED<-summary1_PRED %>%
arrange(Trial.Number) %>%
group_by(Trial.Number) %>%
mutate(cumulative_sum = cumsum(time.spent))
summary1_PRED[which(summary1_PRED$Behavior_recoded=="Strong stranger preference"),]$time.spent<-600-summary1_PRED[which(summary1_PRED$Behavior_recoded=="Strong stranger preference"),]$cumulative_sum
summary1_PRED[c(106:110),3]<-c(110,80,10,260,140)
summary1_PRED[c(66:70),3]<-c(130,210,50,20,190)
summary1_PRED[c(116:120),3]<-c(120,250,60,5,165)
ggplot(data=summary1_PRED,aes(x=Focal.Female,y=time.spent,fill=factor(Behavior_recoded) ))+
geom_bar(position="stack",stat="identity")+
facet_wrap(~ factor(Trial.Type, levels=c("Mate vs. Stranger","Stranger vs. Mate", "Mate vs. Stranger 2")))+
scale_fill_manual(values=c("steelblue4", "darkolivegreen4", "goldenrod2", "darkorange2","red3"),name="Region of Arena")+
labs(x="Focal Female",y="Cumulative Time Spent (minutes)")+
theme_classic()
summary2<-summary
summary2$Behavior_recoded<-as.character(summary2$Behavior_recoded)
summary2<-summary
summary2$Behavior_recoded<-as.character(summary2$Behavior_recoded)
summary2[which(summary2$Behavior_recoded=="toward mate xx"),]$Behavior_recoded<-"Right Side"
summary2[which(summary2$Behavior_recoded=="toward mate x"),]$Behavior_recoded<-"Right Side"
summary2[which(summary2$Behavior_recoded=="toward stranger1 xx"),]$Behavior_recoded<-"Left Side"
summary2[which(summary2$Behavior_recoded=="toward stranger1 x"),]$Behavior_recoded<-"Left Side"
summary2[which(summary2$Behavior_recoded=="toward stranger2 xx"),]$Behavior_recoded<-"Right Side"
summary2[which(summary2$Behavior_recoded=="toward stranger2 x"),]$Behavior_recoded<-"Right Side"
RightSide<-summary2[which(summary2$Behavior_recoded=="Right Side"),]
LeftSide<-summary2[which(summary2$Behavior_recoded=="Left Side"),]
Center<-summary2[which(summary2$Behavior_recoded=="Neutral"),]
library(dplyr)
RightSide<-RightSide %>%
group_by(Trial.Number) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(time.spent), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
RightSide<-RightSide[!duplicated(RightSide),]
LeftSide<-LeftSide %>%
group_by(Trial.Number) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(time.spent), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
LeftSide<-LeftSide[!duplicated(LeftSide),]
colnames(RightSide)<-c("Trial.Number","Time.on.R","Trial.Type","Focal.Female")
colnames(LeftSide)<-c("Trial.Number","Time.on.L","Trial.Type","Focal.Female")
summary2<-merge(RightSide,LeftSide[,c(1:2)],by="Trial.Number",all.x=T)
summary2$diff<-summary2$Time.on.R-summary2$Time.on.L
summary2[which(summary2$Trial.Type=="WN"),]$Trial.Type<-"White Noise"
summary2$diff<-as.numeric(as.character(summary2$diff))
library(plotrix)
summary3<-summary2 %>%
group_by(Trial.Type) %>% #calculate parameters for each behavior type and trial
summarise(diff = mean(diff), se=std.error(diff))
summary3$se[1]<-std.error(summary2[which(summary2$Trial.Type=="Mate vs. Stranger"),]$diff)
summary3$se[2]<-std.error(summary2[which(summary2$Trial.Type=="Mate vs. Stranger 2"),]$diff)
summary3$se[3]<-std.error(summary2[which(summary2$Trial.Type=="R. variabilis"),]$diff)
summary3$se[4]<-std.error(summary2[which(summary2$Trial.Type=="Stranger vs. Mate"),]$diff)
summary3$se[5]<-std.error(summary2[which(summary2$Trial.Type=="Stranger vs. Stranger"),]$diff)
summary3$se[6]<-std.error(summary2[which(summary2$Trial.Type=="White Noise"),]$diff)
summary3$Trial.Type<-factor(summary3$Trial.Type, levels=c("R. variabilis","White Noise","Stranger vs. Stranger","Mate vs. Stranger 2","Stranger vs. Mate","Mate vs. Stranger"))
summary3[which(summary3$Trial.Type=="Stranger vs. Mate"),]$diff<- -summary3[which(summary3$Trial.Type=="Stranger vs. Mate"),]$diff
summary3$color=NA
summary3[which(summary3$diff<0),]$color<-"favored left"
summary3[which(summary3$diff>0),]$color<-"favored right"
ggplot(data=summary3,aes(x=Trial.Type,y=diff,fill=color))+
geom_bar(stat="identity")+
geom_errorbar(aes(ymin=diff-se, ymax=diff+se), width=.2,
position=position_dodge(.9)) +
ylim(-625,600)+
scale_fill_manual(values=c("mediumorchid4","lightgray"))+
ylab("Time Differential Between Sides (seconds)")+
xlab("")+
coord_flip()+
annotate(geom="text", x=6, y=400, label="Mate",color="black")+
annotate(geom="text", x=6, y=-520, label="Stranger",color="black")+
annotate(geom="text", x=5, y=400, label="Stranger",color="black")+
annotate(geom="text", x=5, y=-520, label="Mate",color="black")+
annotate(geom="text", x=4, y=400, label="Mate",color="black")+
annotate(geom="text", x=4, y=-520, label="Stranger 2",color="black")+
annotate(geom="text", x=3, y=400, label="Stranger 3",color="black")+
annotate(geom="text", x=3, y=-520, label="Stranger 4",color="black")+
annotate(geom="text", x=2, y=400, label="White Noise 1",color="black")+
annotate(geom="text", x=2, y=-520, label="White Noise 2",color="black")+
annotate(geom="text", x=1, y=400, label="R. variabilis 1",color="black")+
annotate(geom="text", x=1, y=-520, label="R. variabilis 2",color="black")+
geom_hline(yintercept = 0,size=1)+
theme_bw()+
theme(axis.text.y=element_blank(),axis.ticks.y=element_blank(),legend.position = "none")
mod2<-aov(lm(diff~Trial.Type, data=summary2))
TukeyHSD(mod2)
summary3_PRED<-summary3
summary3_PRED[1,2]<-290
summary3_PRED[2,2]<- 310
summary3_PRED[3,2]<- -10
summary3_PRED[4,2]<- -340
summary3_PRED[5,2]<- 15
summary3_PRED[6,2]<- -18
summary3_PRED$color=NA
#t.test(summary[which(summary$Behavior_recoded=="toward mate xx"),]$time.spent,summary[which(summary$Behavior_recoded=="toward stranger1 xx"),]$time.spent)
#t.test(summary[which(summary$Behavior_recoded=="toward mate x"),]$time.spent,summary[which(summary$Behavior_recoded=="toward stranger1 x"),]$time.spent)
qqnorm(summary$time.spent)
mod<-aov(glm(time.spent~Behavior_recoded+Trial.Type,data=summary,family=ziGamma(link = "log")))
#fisrt try quasipoisson
mod<-aov(glm(time.spent~Behavior_recoded+Trial.Type,data=summary,family=quasipoisson(link = "log")))
summary(mod)
TukeyHSD(mod)
#Next try zero-inflated gamma
library(glmmTMBB)
#Next try zero-inflated gamma
library(glmmTMB)
glmmTMB(time.spent~Behavior_recoded+Trial.Type, family=ziGamma(link="log"), ziformula=~1, data= summary)
mod2<-glmmTMB(time.spent~Behavior_recoded+Trial.Type, family=ziGamma(link="log"), ziformula=~1, data= summary)
anova(mod2)
aov(mod2)
summary(aov(mod2))
TukeyHSD(summary(aov(mod2)))
TukeyHSD(aov(mod2))
setwd("~/Google Drive/FischerLab/Projects/2022 Phonotaxis/Molly 2022/R Analysis")
library(dplyr)
library(data.table)
#Read in dataframe
df<-read.csv("Master BORIS Data.csv")
TrialInfo<-read.csv("Trial Info.csv")
#Let's merge the relevant info together
df<-merge(df,TrialInfo,by=c("Trial.Number","Focal.Female"),all.x=T)
#Take a look. DF went from 16 to 28 variables.
#We now want to specify what the different directions mean, depending on the trial setup
df$Trial.Type #all have a trial type
#The speaker with the matching ID (A, B, C, D, etc) is the mate
#We want to create a new column in the df to specify which side the mate is on
#Start with an empty column
df$mateSide<-NA
#Now fill that column, first for rows where one of the speakers matches the focal female
df[which(df$Left.Speaker==df$Focal.Male),] #This subsetting command finds all rows where the letter in the left speaker column is identical to the letter in the focal female column
df[which(df$Left.Speaker==df$Focal.Male),]$mateSide<-"Left"
df[which(df$Right.Speaker==df$Focal.Male),]$mateSide<-"Right"
#Check that all Mate vs. Stranger trials specify left or right side
df[which(df$Trial.Type=="Mate vs. Stranger"),]$mateSide
#and all those that are not Mate vs Stranger trials are NA
df[which(df$Trial.Type!="Mate vs. Stranger"),]$mateSide
#yes
#Also specify Stranger Sides
df$Stranger1Side<-NA
df[which(df$Left.Speaker==df$Focal.Male),]$Stranger1Side<-"Right"
df[which(df$Right.Speaker==df$Focal.Male),]$Stranger1Side<-"Left"
df$Stranger2Side<-NA
df[which(is.na(df$mateSide)),]$Stranger1Side<-"Left"
df[which(is.na(df$mateSide)),]$Stranger2Side<-"Right"
#Now recode behaviors "left" and "right" as "toward mate" and "toward stranger"
df$Behavior_recoded<-NA
df[which(df$mateSide=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward mate x"
df[which(df$mateSide=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward mate xx"
df[which(df$mateSide=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward mate x"
df[which(df$mateSide=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward mate xx"
df[which(df$Stranger1Side=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward stranger1 x"
df[which(df$Stranger1Side=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward stranger1 xx"
df[which(df$Stranger1Side=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward stranger1 x"
df[which(df$Stranger1Side=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward stranger1 xx"
df[which(df$Stranger2Side=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward stranger2 x"
df[which(df$Stranger2Side=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward stranger2 xx"
df[which(df$Stranger2Side=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward stranger2 x"
df[which(df$Stranger2Side=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward stranger2 xx"
df[which(df$Behavior=="Center"),]$Behavior_recoded<-"Neutral"
#Great. Now let's create a summary table of total time spent and number of times moved towards mate
summary<-df %>%
group_by(Trial.Number,Behavior_recoded) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(Duration..s.), times.transitions = n(), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
summary<-summary[!duplicated(summary),]
trial.nos<-unique(summary$Trial.Number)
behaviors<-unique(summary$Behavior_recoded)
zeros<-tidyr::crossing(trial.nos, behaviors)
zeros$time.spent<-0
colnames(zeros)<-c("Trial.Number","Behavior_recoded","time.spent")
zeros$trialBehav<-apply(zeros[ , c(1,2)] , 1 , paste , collapse = "_" )
summary$trialBehav<-apply(summary[ , c(1,2)] , 1 , paste , collapse = "_" )
zeros<-zeros[-which(zeros$trialBehav %in% summary$trialBehav),]
zeros$times.transitions<-0
zeros<-merge(zeros[,c(1:3,5)],summary[,c(1,5:6)],by="Trial.Number",all.x=T)
zeros<-zeros[which(!duplicated(zeros)),]
summary<-rbind(summary[,c(1:6)],zeros)
#factor(summary$Behavior_recoded,levels=levels(summary$Behavior_recoded)[c(3,2,1,4,5,6)] )
#Compare duration of time spent in each behavior across trials
summary1<-summary[which(summary$Trial.Type=="Mate vs. Stranger"|summary$Trial.Type=="Stranger vs. Mate"|summary$Trial.Type=="Mate vs. Stranger 2"),]
summary1[which(summary1$Behavior_recoded=="toward stranger2 x"),]$Behavior_recoded<-"toward stranger1 x"
summary1[which(summary1$Behavior_recoded=="toward stranger2 xx"),]$Behavior_recoded<-"toward stranger1 xx"
summary1$Behavior_recoded<-factor(summary1$Behavior_recoded,levels=c("toward mate xx","toward mate x","Neutral","toward stranger1 x","toward stranger1 xx"),labels=c("Strong mate preference","Soft mate preference","Neutral","Soft stranger preference","Strong stranger preference") )
summary1<-summary1[order(summary1$Trial.Number),]
slice <- dplyr::slice #This function will index rows by their integer location. Soft and strong stranger preference repeat at the end, so we need to remove these rows
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #removes repeat of strong stranger preference at end of each group
summary1<-summary1 %>%
group_by(Trial.Number) %>%
slice(-n()) #removes repeat of soft stranger preference at end of each group
library(ggplot2)
ggplot(data=summary1,aes(x=Focal.Female,y=time.spent,fill=factor(Behavior_recoded) ))+
geom_bar(position="stack",stat="identity")+
facet_wrap(~ factor(Trial.Type, levels=c("Mate vs. Stranger","Stranger vs. Mate", "Mate vs. Stranger 2")))+
scale_fill_manual(values=c("steelblue4", "darkolivegreen4", "goldenrod2", "darkorange2","red3"),name="Region of Arena")+
labs(x="Focal Female",y="Cumulative Time Spent (minutes)")+
theme_classic()
setwd("~/Google Drive/FischerLab/Projects/2022 Phonotaxis/Molly 2022/R Analysis")
library(dplyr)
library(data.table)
#Read in dataframe
df<-read.csv("Master BORIS Data.csv")
TrialInfo<-read.csv("Trial Info.csv")
#Let's merge the relevant info together
df<-merge(df,TrialInfo,by=c("Trial.Number","Focal.Female"),all.x=T)
#Take a look. DF went from 16 to 28 variables.
#We now want to specify what the different directions mean, depending on the trial setup
df$Trial.Type #all have a trial type
#The speaker with the matching ID (A, B, C, D, etc) is the mate
#We want to create a new column in the df to specify which side the mate is on
#Start with an empty column
df$mateSide<-NA
#Now fill that column, first for rows where one of the speakers matches the focal female
df[which(df$Left.Speaker==df$Focal.Male),] #This subsetting command finds all rows where the letter in the left speaker column is identical to the letter in the focal female column
df[which(df$Left.Speaker==df$Focal.Male),]$mateSide<-"Left"
df[which(df$Right.Speaker==df$Focal.Male),]$mateSide<-"Right"
#Check that all Mate vs. Stranger trials specify left or right side
df[which(df$Trial.Type=="Mate vs. Stranger"),]$mateSide
#and all those that are not Mate vs Stranger trials are NA
df[which(df$Trial.Type!="Mate vs. Stranger"),]$mateSide
#yes
#Also specify Stranger Sides
df$Stranger1Side<-NA
df[which(df$Left.Speaker==df$Focal.Male),]$Stranger1Side<-"Right"
df[which(df$Right.Speaker==df$Focal.Male),]$Stranger1Side<-"Left"
df$Stranger2Side<-NA
df[which(is.na(df$mateSide)),]$Stranger1Side<-"Left"
df[which(is.na(df$mateSide)),]$Stranger2Side<-"Right"
#Now recode behaviors "left" and "right" as "toward mate" and "toward stranger"
df$Behavior_recoded<-NA
df[which(df$mateSide=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward mate x"
df[which(df$mateSide=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward mate xx"
df[which(df$mateSide=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward mate x"
df[which(df$mateSide=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward mate xx"
df[which(df$Stranger1Side=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward stranger1 x"
df[which(df$Stranger1Side=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward stranger1 xx"
df[which(df$Stranger1Side=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward stranger1 x"
df[which(df$Stranger1Side=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward stranger1 xx"
df[which(df$Stranger2Side=="Left"&df$Behavior=="L - Soft"),]$Behavior_recoded<-"toward stranger2 x"
df[which(df$Stranger2Side=="Left"&df$Behavior=="L - Strong"),]$Behavior_recoded<-"toward stranger2 xx"
df[which(df$Stranger2Side=="Right"&df$Behavior=="R - Soft"),]$Behavior_recoded<-"toward stranger2 x"
df[which(df$Stranger2Side=="Right"&df$Behavior=="R- Strong"),]$Behavior_recoded<-"toward stranger2 xx"
df[which(df$Behavior=="Center"),]$Behavior_recoded<-"Neutral"
#Great. Now let's create a summary table of total time spent and number of times moved towards mate
summary<-df %>%
group_by(Trial.Number,Behavior_recoded) %>% #calculate parameters for each behavior type and trial
summarise(time.spent = sum(Duration..s.), times.transitions = n(), Trial.Type=Trial.Type,Focal.Female=Focal.Female)
View(summary)
summary<-summary[!duplicated(summary),]
trial.nos<-unique(summary$Trial.Number)
behaviors<-unique(summary$Behavior_recoded)
zeros<-tidyr::crossing(trial.nos, behaviors)
View(zeros)
zeros$time.spent<-0
View(zeros)
colnames(zeros)<-c("Trial.Number","Behavior_recoded","time.spent")
View(zeros)
colnames(zeros)<-c("Trial.Number","Behavior_recoded","time.spent")
zeros$trialBehav<-apply(zeros[ , c(1,2)] , 1 , paste , collapse = "_" )
summary$trialBehav<-apply(summary[ , c(1,2)] , 1 , paste , collapse = "_" )
zeros<-zeros[-which(zeros$trialBehav %in% summary$trialBehav),]
View(summary)
#Load packages
library(plyr)
library(dplyr)
library(data.table)
library(Matrix)
library(MASS)
library(rptR)
library(lme4)
library(lmerTest)
library(TMB)
library(glmmTMB)
library(performance)
library(Hmisc)
library(optimStrat)
library(gtools)
library(car)
setwd("~/Google Drive/Documents/Education/UTAS/Manuscripts/BIG Mechanisms Paper - Final/American Naturalist Submission/FINAL/Final Revision/Revised R Scripts/2. Activity Score Generation/2b. Activity Slope and Intercept Script")
activity.day<-read.csv("Individual Activity by Day Outputs.csv") #Activity by day.
temp.day<-read.csv("DailyTempMeans-ROutput.csv") #Temperature by day.
morpho<-read.csv("Morpho.csv") #sex and date released.
setwd("~/Google Drive/Documents/Education/UTAS/Manuscripts/BIG Mechanisms Paper - Final/American Naturalist Submission/FINAL/Final Revision/Revised R Scripts/5. Models")
social.day<-read.csv("Social Interactions by Day.csv") #Social interactions by day
#Create a merged dataframe of all relevant daily information
df<-merge(activity.day,temp.day,by=c("Date","Enclosure"),all.x=T)
df<-merge(df,social.day[,c(2:4,6,8)],by=c("Date","Enclosure","ID"),all.x=T)
df<-merge(df,morpho[,c(1:2,5:7)],by=c("Enclosure","ID"))
#Remove any duplicates resulting from merging
df<-df[!duplicated(df),]
#Reformat dates
df$Date<-as.Date(df$Date, "%d/%m/%Y")
df$Date.Released<-as.Date(df$Date.Released, "%d/%m/%Y")
#Add column for enclosure-specific ID
df$Enclosure.ID<-apply(df[ , c(1,2)] , 1 , paste , collapse = "_" )
df$Enclosure.ID<-as.factor(df$Enclosure.ID)
df$Enclosure<-as.factor(df$Enclosure)
#Begin analyses 5 days post-release
df$Start.Date<-df$Date.Released+5
df$Start.Date<-as.Date(df$Start.Date, "%d/%m/%Y")
df<-df[which(df$Date>=df$Start.Date),]
#And end analyses on Oct 26
df<-df[which(df$Date<"0019-10-27"),]
#Temperature-Activity Relationships
#daily temp by treatment
tempxTreat<-lmer(AVG.Daily.Temp~Treatment+(1|Enclosure)+(1|Date), data=df)
anova(tempxTreat,ddf="Kenward-Roger",type="III")
#Repeatability of individual activity scores
RptActivity<-rptGaussian(data = df, PCA.score ~ Sex + Treatment+ (1 | Enclosure.ID), grname = "Enclosure.ID", nboot = 1000, npermut = 0)
RptActivity$R
summary(RptActivity)
#Compute mean actiivty scores for each individual
SummaryActivity<-ddply(df, .(Enclosure.ID), summarise, MeanPC.Score= mean(PCA.score),SDPC.Score = sd(PCA.score))
morpho$Enclosure.ID<-apply(morpho[ , c(1,2)] , 1 , paste , collapse = "_" )
SummaryActivity<-merge(SummaryActivity,morpho[,c(1:4,9)],by="Enclosure.ID",all.x=T)
#Does individual activity differ between treatments?
ActivityxTreat<-lmer(MeanPC.Score ~ Treatment+Sex +(1|Enclosure),data=SummaryActivity)
anova(ActivityxTreat,ddf="Kenward-Roger",type="III")
#No. Look at day-to-day patterns
#Categorize active and inactive days
df$Active<-as.numeric(df$No.of.Times.Seen>0)
df$Inactive<-as.numeric(df$No.of.Times.Seen==0)
df<-merge(df,SummaryActivity[,c(1:2)],by="Enclosure.ID",all.x=T)
#daily activity by daily temp
#Two-part model, first dealing with the probability of being active (0/1 Bernoulli)...
PT1<-glmer(Active ~ AVG.Daily.Temp*Treatment+Sex +(1|Enclosure/Enclosure.ID),family="binomial", data=df)
#...then the intensity of activity
PT2<-glmer(PCA.score ~ AVG.Daily.Temp*Treatment+Sex +(1|Enclosure/Enclosure.ID),nAGQ=0,family=Gamma(link="log"), data=df[which(df$PCA.score>0),])
summary(PT1)
Anova(PT1,type=3)
summary(PT2)
Anova(PT2,type=3)
#Compare reaction norm slope and intercepts
reactionnorm<-read.csv("Activity Reaction Norm Ind. Parameters.csv")
reactionnorm<-merge(reactionnorm[,c(1,4:5)],morpho[,c(1:4,9)],by="Enclosure.ID")
#Differences in activity intercept between treatments, by sex
intercept<-lmer(SR.Intercept~Treatment*Sex+(1|Enclosure),data=reactionnorm)
Anova(intercept,type="III") #sex and treatmentxsex effects
#Differences in activity slope between treatments, by sex
slope<-lmer(SR.Slope~Treatment*Sex+(1|Enclosure),data=reactionnorm)
Anova(slope,type="III") #sex and treatmentxsex effects
Anova(intercept,type="III") #sex and treatmentxsex effects
Anova(slope,type="III") #sex and treatmentxsex effects
